package com.xique.door.service;

import com.xique.door.bean.domain.CardDevice;
import com.xique.door.bean.domain.DCard;

import java.util.List;

/**
 * 卡片Service接口
 *
 * @author ww
 * @date 2021-09-14
 */
public interface IDCardService {
    /**
     * 查询卡片
     *
     * @param id 卡片ID
     * @return 卡片
     */
    public DCard selectDCardById(Long id);

    /**
     * 查询门禁卡片信息
     *
     * @param cardIds 门禁卡片信息ID
     * @return 门禁卡片信息
     */
    public List<DCard> selectCardByIds(List<Long> cardIds);

    /**
     * 查询卡片列表
     *
     * @param dCard 卡片
     * @return 卡片集合
     */
    public List<DCard> selectDCardList(DCard dCard);

    /**
     * 新增卡片
     *
     * @param dCard 卡片
     * @return 结果
     */
    public int insertDCard(DCard dCard);

    /**
     * 修改卡片
     *
     * @param dCard 卡片
     * @return 结果
     */
    public int updateDCard(DCard dCard);

    /**
     * 解绑卡片与用户房屋的关系
     *
     * @param cardId 卡片id
     * @return 结果
     */
    int updateUserHouse(Long cardId);

    /**
     * 批量删除卡片
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteDCardByIds(String ids);

    /**
     * 删除卡片信息
     *
     * @param id 卡片ID
     * @return 结果
     */
    public int deleteDCardById(Long id);

    /**
     * 通过用户id删除卡片
     *
     * @param userId
     * @return
     */
    int deleteDCardByUserId(Long userId);

    /**
     * 查询卡片信息
     *
     * @param cardIds
     * @param status
     * @return
     */
    List<DCard> selectDCardByIds(List<Long> cardIds, Integer status);

    /**
     * 查询用户卡片信息
     *
     * @param userIds
     * @param status
     * @return
     */
    List<DCard> selectDCardByUserIds(List<Long> userIds, Integer status);

    /**
     * 查询卡片信息
     *
     * @param cardSns
     * @param status
     * @return
     */
    List<DCard> selectDCardByCardSns(List<String> cardSns, Integer status);

    /**
     * 查询卡片信息(精确查询)
     *
     * @param
     * @param
     * @param
     * @return
     */
    public List<DCard> selectCardList(DCard dCard);

    public List<DCard> selectConditionCardList(DCard dCard);

    public int deleteDCardByIdList(List<Long> ids);

    /**
     * @param id
     * @description: 根据设备id查询设备和卡片相关表数据
     * @author taojc
     * @date: 2022/8/29
     */
    List<CardDevice> selectDCardDeviceList(Long id);

    /**
     * @param id
     * @description: 根据设备id删除设备和卡片相关表数据
     * @author taojc
     * @date: 2022/8/29
     */
    int deleteDCardDeviceId(Long id);

}
